#ifndef __IIC_H__
#define __IIC_H__
#include "stm32f4xx.h"

#define SCL_L()   GPIOB->ODR &= ~(1 << 8)
#define SCL_H()   GPIOB->ODR |=  (1 << 8)

#define SDA_L()   GPIOB->ODR &= ~(1 << 9)
#define SDA_H()   GPIOB->ODR |=  (1 << 9)

#define SDA_IN()  {GPIOB->MODER &= ~(3 << 18);__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();}
#define SDA_OUT() {GPIOB->MODER |=  (1 << 18);__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();}


#define SDA_STATUS  GPIOB->IDR & 1 << 9


void IIC_Config(void);
void IIC_Start(void);
void IIC_Send_Byte(u8 data);
u8 IIC_Wait_Ack(void);
void IIC_Stop(void);
u8 IIC_Read_Byte(void);
void IIC_Init(void);
void IIC_NAck(void);

#endif
